package ferp.core.tutorial.beginner;

import ferp.core.game.Bid;
import ferp.core.tutorial.Scenario;

/**
 * User: olegs
 * Date: 10/11/2014 09:43
 */
public class AllPass extends Scenario
{
  public AllPass()
  {
    super(new Resource("Распасы", "All-pass"));

    introduction.add(new Resource("<b>Распасы</b> разыгрываются, в случае если <b>торг</b> завершается 3-мя пасами. Задача игроков на распасах взять <b>как можно меньше</b> взяток. В идеале - не взять ни одной.",
                                  "<b>All-pass</b> is played when <b>bidding</b> ends with all 3 players pass. The player's goal is to take <b>the lowest possible</b> number of tricks. Ideally none."));
    introduction.add(new Resource("По результатам розыгрыша, за каждую взятку, игрокам начисляются штрафные очки, которые записываются в <b>гору</b>. Не взявший ни одной взятки - получает бонус, записываемый в <b>пулю</b>.",
                                  "Each trick gives its owner a penalty score written in the <b>mountain</b>. A player who took no tricks is rewarded with a bonus written in the <b>pool</b>."));
    introduction.add(new Resource("Подробнее о системе подсчета очков смотрите в конце розыгрыша, нажав кнопку <b>Подсчёт</b> в окошке пули.",
                                  "Tapping the <b>Scoring</b> button at the end of the game will provide you with more details on the scoring system."));

    deal(0, 1133260836, -1742634552, 608325123, 1048576, 16);

    bid(0, 0, Bid.pass(), Note.top(new Resource("Правый игрок тоже <b>пасует</b>. У Вас слишком <b>слабая</b> карта для объявления любой игры. Поэтому и Вам стоит пасовать: нажмите кнопку <b>Пас</b> (обратите внимание на стоимость взятки: <font color=\"red\"><b>×1</b></font>).",
                                                "The right player also <b>passes</b>. Your cards are too <b>weak</b> for playing any contract. Therefore, you should pass too: tap the <b>Pass</b> button (note the trick cost: <font color=\"red\"><b>×1</b></font>).")));

    bid(0, 1, Bid.pass(), Note.center(new Resource("Игрок слева, в этом розыгрыше, является <b>первой рукой</b> {first_hand_left}. Он начинает <b>торг</b>.",
                                                   "Player on the left is a <b>first hand</b> {first_hand_left} in this game. He starts the <b>bidding</b>.")));

    bid(0, 2, Bid.pass(), Note.center(new Resource("Левый игрок <b>пасует</b>.",
                                                   "Left player <b>passes</b>.")));

    setOver.bidding(new Resource("<b>Торг</b> завершен. По правилам, если все игроки пасовали, разыгрываются <b>распасы</b>, где задача каждого из игроков - взять как можно меньше взяток.",
                                 "<b>Bidding</b> is over. According to the game rules if all the players passed, <b>all-pass</b> game starts, where each player's goal is to take as few tricks as possible."));

    trick(0, -850818544, Note.top(new Resource("У правого игрока была 0c. Вы обязаны играть в ту же масть и, поскольку, эта взятка Ваша в любом случае, выгоднее положить cТ.",
                                               "You must play 0c too. As this trick is yours anyway, it's better to put cA.")),
                                  Note.center(new Resource("Перед ходом <b>первой руки</b> открывается верхняя карта <b>прикупа</b>. Она, как таковая, не участвует в розыгрыше, но в этом круге игроки <b>обязаны</b> ходить картой той же масти. Если масть отсутствует - можно класть любую карту.",
                                                           "Top <b>talon</b> card is revealed before the <b>first hand</b> makes a move. It does not participate in the round, but each player <b>must</b> play card of the same suit. If none, any card can be played.")),
                                  Note.top(new Resource("Ход <b>первой руки</b> в 0c - масть открытой карты прикупа.",
                                                        "The <b>first hand</b> starts with 0c - as required by the open talon card.")),
                                  Note.top(new Resource("Ваша карта самая старшая, поэтому <b>взятку</b> забираете Вы.",
                                                        "Your card is the highest in this round, therefore the <b>trick</b> is yours.")));

    trick(1, -581133797, Note.top(new Resource("Масть хода - 0h. Правый игрок положил h8. Вы можете либо забрать взятку hД, либо отдать её, положив h9. В данном случае <b>второй</b> вариант предпочтительнее. hД можно будет отдать на оставшиеся в игре hК или hT.",
                                               "The must play suit is 0h. The right player played h8. You can take the trick with hQ or give it up with h9. In this case the <b>latter</b> is preferable. hQ can go later with hK or hA that are still in the game.")),
                                  Note.center(new Resource("Второй ход. Открывается вторая карта прикупа. Так же как и в предыдущем ходе, она задаёт масть. Ход снова от <b>первой руки</b>.",
                                                           "Second round. The second talon card is open and as in the previous round it sets the suit. The <b>first hand</b> starts again.")),
                                  Note.top(new Resource("Ход <b>первой руки</b> в 0h - масть открытой карты прикупа.",
                                                        "The <b>first hand</b> starts with 0h - as required by the open talon card.")),
                                  Note.top(new Resource("У левого игрока самая большая карта h10, поэтому он забирает взятку.",
                                                        "Left player has the highest card h10, thus he takes the trick.")));

    trick(2, -1067935978, Note.top(new Resource("Правый игрок сбросил dК. Вам также стоит сбросить карту побольше.",
                                                "The right player has disposed of the dK. You should better play the highest card as well.")),
                          Note.center(new Resource("В прикупе больше нет карт. Этот раунд также начинается с хода <b>первой руки</b>, который задаёт масть. В последующих семи раундах первым будет ходить игрок, <b>забравший</b> последнюю взятку.",
                                                   "All talon cards are gone. The <b>first hand</b> starts this round, setting the suit. In next seven rounds the starting player will be the one who <b>won</b> the last trick.")),
                          Note.top(new Resource("Левый игрок старается освободиться от <b>больших</b> карт на ранних этапах розыгрыша, чтобы под конец остаться с мелкой картой.",
                                                "The left player plays <b>high</b> cards at early stages of the game to benefit from staying with low ones towards the end.")));

    trick(3, -1067411170, new Resource("Правый игрок положил h7. Ваш ход дамой - единственно возможный по правилам ход. Он называется <b>очевидным</b>.",
                                       "The right player played h7. The only possible move is queen according to the rules. It is called an <b>obvious</b> move."),
                          new Resource("Левый игрок ходит снова. Но на этот раз потому, что он забрал последнюю взятку.",
                                       "The left player starts the round once again, but this time because he took the last trick."),
                          new Resource("Он решил забрать ещё одну очевидную с его точки зрения взятку. Для Вас это хорошо, так как Вы сможете избавиться от hД.",
                                       "He decided to take another obvious trick. This is actually great, as you can dispose of the hQ."));

    trick(4, -1069185534, new Resource("В игре, кроме Ваших, еще три 0s: <b>9</b>, <b>10</b> и <b>Т</b>. Можно играть s8, отдавая взятку правому игроку, оставив sК на потом.",
                                       "There are three more 0s in the game: <b>9</b>, <b>10</b> and <b>A</b>. You can play s8, letting the right player take the trick and leaving the sK for later."),
                          null,
                          null);

    trick(5, -1065154748, new Resource("Правый игрок продолжает разыгрывать 0s. Стоит играть sК, забирая взятку. s7, впоследствии, уйдёт под последнюю 0s.",
                                       "The right player keeps playing 0s. Playing sK is preferable since the remaining 0s will beat your s7."),
                          null,
                          new Resource("В этом раунде первый ход правого игрока, так как он забрал предыдущую взятку.",
                                       "The right player starts this round as he took the last trick."));

    trick(6, -1072344684, new Resource("У Вас самая старшая 0d из оставшихся в игре. В остальных мастях - самые младшие карты. Безопаснее всего забрать взятку в 0d.",
                                       "You have the highest card in 0d left in the game. Your other cards are the lowest in their respective suits. It is safer to take the trick in 0d."),
                          null,
                          null);

    trick(7, -1072935281, new Resource("Теперь у Вас самые младшие карты в мастях, которые ещё в игре. Так как для хода они равносильны, положите c10.",
                                       "At this point you ended up with the lowest cards in suits still in the game. It does not matter what card you play now, so play c10."),
                          null,
                          null);

    trick(8, -1064105144, new Resource("Правый игрок положил 0d. Так как у Вас нет этой масти, по правилам можно класть любую карту. Положите c9.",
                                       "The right player played 0d. As you do not have cards of this suit, you are allowed to play any card. Play c9."),
                          null,
                          null);

    trick(9, -1064173217, new Resource("Кладите Вашу последнюю карту.", "Play your last card."),
                          null,
                          null);

    setOver.moving(new Resource("По результатам розыгрыша, из <b>10</b>-ти возможных взяток, Вы и левый игрок взяли по <b>3</b>. Правый игрок взял <b>4</b>.<br>" +
                                "Далее Вам будет показан промежуточный <b>счёт</b> в игре, называемый <b>пуля</b>.",
                                "Set results: out of <b>10</b> tricks, you and the left player each took <b>3</b>. The right player took <b>4</b>.<br>" +
                                "Next you will be presented with the intermediate game <b>score</b> board."));

    scoring(new Resource("Вы и левый игрок взяли минимальное число взяток в розыгрыше. Это число вычитается из количества взяток у каждого игрока. Ненулевые остатки умножаются на стоимость взятки и добавляются к <b>горе</b> соответствующих игроков.",
                         "You and the left player took the lowest number of tricks. This number is substracted from the each player's tricks. The remnants are multiplied by the trick cost and added to the respective player's <b>mountain</b> (penalty area)."));
  }
}
